#include "../header.h"

// typedef uint32_t in_addr_t;

//            struct in_addr {
//                in_addr_t s_addr;
//            };

/**
 * @函数原型: int inet_aton(const char *cp, struct in_addr *inp);
 * @函数功能: 把主机字符串形式 转换成网络字节序
 * @参数说明: 
 * @       参数1: cp 字符串。
 * @       参数2: inp
 * @       参数3: 
 * @返回值: inet_aton() returns nonzero if the address is valid,  zero  if
       not.  转换成功  返回1  失败返回0.
 * @param {int} argc
 */

/**
 * @函数原型: int inet_pton(int af, const char *src, void *dst);
 * @函数功能: 主机字符串 - 网络字节序
 * @参数说明: 
 * @       参数1: af 协议族 
 * @       参数2: src：被转换的字符串
 * @       参数3: dst 转换结果。
 * @返回值:  inet_pton() returns 1 on success (network address was successfully  converted).
 * 如果成功 返回1.失败返回0.
 * @param {int} argc
 */
/**
 * @函数原型: const char *inet_ntop(int af, const void *src, char *dst, socklen_t size);
 * @函数功能: 网络字节序 - 主机字符串。
 * @参数说明: 
 * @       参数1: af ： 协议族 AF_INET
 * @       参数2: src : 被转换的网络字节序数据
 * @       参数3: dst ： 转换结果的字符串。
 *          参数4 ： size：转换结果所在的空间大小。
 * @返回值: 指向转换结果的字符串的指针。
 * @param {int} argc
 */
int main(int argc, char const *argv[])
{
    //1主机字符串 - 网络字节序    ip 
    struct in_addr res = {0};
    int flg = inet_aton("192.168.1.110",&res);
    printf("flg = %d\tres:%d\n",flg,res.s_addr);

    //2.主机字符串 -网络字节序
    char *ip = "192.168.1.110";
    unsigned int ipres = 0;
    inet_pton(AF_INET,ip,&ipres);
    printf("转换结果是:%d\n",ipres);

    //网络字节序 - 主机字符串                        255.255.255.255
    char ipk[16] = "";    // 主机 IP ： 字符串形式 + 32位无符号数值形式。 字节1 255  字节2 255  字节3 255 字节4 255
    inet_ntop(AF_INET,&ipres,ipk,sizeof(ipk));
    printf("网络字节序转换成主机字符串的结果是:%s\n",ipk);


    return 0;
}
